home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C64'er
/
C64'er.iso
/
sh6x
/
sh65b.d64
/
disk fueller
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
5KB
|
150 lines
100 REM **************************
110 REM * *
120 REM * *
130 REM * DISK FUELLER *
140 REM * *
150 REM * *
160 REM * *
170 REM * VON UWE GERLACH *
180 REM * *
190 REM * BRUEHLSTR. 23 *
200 REM * *
210 REM * *
220 REM * 6440 BEBRA 1 *
230 REM * *
240 REM * *
250 REM * *
260 REM * *
270 REM * IM APRIL 1985 *
280 REM * *
290 REM * *
300 REM **************************
400 :
500 :
1000 POKE53280,0: POKE53281,0: REM FARBE
1010 PRINT CHR$(14);"[147][152] [214][195] 1541 [196] I S K [198] U E L L E R":PRINT:PRINT:PRINT
1015 PRINT"[196]IESES [208]ROGRAMM WURDE GESCHRIEBEN VON:":PRINT:PRINT
1020 PRINT,"[154] [213]WE [199]ERLACH": PRINT," [194]RUEHLSTR. 23": PRINT: PRINT," 6440 [194]EBRA 1[152]"
1025 PRINT:PRINT:PRINT"[197]S SCHAFFT AUF VOLLEN [196]ISKETTEN NOCH"
1030 PRINT"ETWAS [208]LATZ, INDEM ES DIE EIGENTLICH"
1035 PRINT"FUER DAS [196]IRECTORY VORGESEHENE [211]PUR 18"
1040 PRINT"BELEGT.":PRINT:PRINT
1045 :
1050 OPEN 1,8,15,"I": REM FUER BEFEHLE
1060 OPEN 2,8,2,"#" : REM PUFFERKANAL
1090 :
1100 REM *****************************
1110 REM DIRECTORYLAENGE ERMITTELN
1120 REM *****************************
1130 :
2000 DIM T(25): DIM S(25): DIM E(25)
2010 PRINT# 1, "U1:"2;0;18;0: REM BAM
2020 GET# 2,T$,S$: REM ZEIGER AUF DIR.
2030 T(0)=ASC(T$+CHR$(0)): REM TRACK
2040 S(0)=ASC(S$+CHR$(0)): REM SECTOR
2050 T=T(0): REM TRACK DIR. ANFANG
2060 S=S(0): REM SECTOR DIR. ANFANG
2070 B=1: REM BLOCKZAEHLER
2100 PRINT# 1, "U1:"2;0;T;S
2110 GET# 2,T$,S$: REM ZEIGER
2120 T=ASC(T$+CHR$(0))
2130 S=ASC(S$+CHR$(0))
2140 IF T=0 OR T>35 OR S>20 OR B=25 THEN 2400: REM LETZTER DIRECTORY-BLOCK
2150 T(B)=T: S(B)=S: REM ZEIGER MERKEN
2155 E(B-1)=8: REM EINTRAEGE IM BLOCK
2160 B=B+1: REM ZAEHLER ERHOEHEN
2190 GOTO 2100 : REM NAECHSTER BLOCK
2400 M=B: REM DIR. BLOCKZAHL
2500 F=0: REM ZAEHLER FREIE EINTRAEGE
2510 FOR I=2 TO 226 STEP 32
2520 : PRINT# 1, "B-P:"2,I: REM ZEIGER
2530 : GET# 2,W$: REM FILETYP
2540 : IF W$="" THEN F=F+1: REM FREI
2590 NEXT I: REM ALLE EINTR. IM BLOCK
2600 E(B-1)=8-F: REM EINTRAEGE/BLOCK
2610 IF F=8 AND M=1 THEN 7800: REM LEER
2700 PRINT "[199]ENUEGEN";F;"FREIE [196]IRECTORY-[208]LAETZE ? ";
2750 GET A$: IF A$="" THEN 2750
2760 IF A$<>"N" THEN A$="J"
2770 PRINT A$: PRINT: PRINT: PRINT
2790 :
3000 REM *****************************
3010 REM LEERE DIR. BLOECKE FESTST.
3020 REM *****************************
3030 :
3050 PRINT# 1, "U1:"2;0;18;0: REM BAM
3060 PRINT# 1, "B-P:"2,73: REM SPUR 18
3100 B=0 : REM BLOCKZAEHLER
3110 L=19: REM ZAHL LEERE DIR-BLOECKE
3120 DIM Z(25): REM ZUSTAND DER BLOCKS
3130 FOR I=1 TO 3: REM BYTES SPUR 18
3140 : GET# 2, W$: REM BELEGUNGSCODE
3150 : W=ASC(W$+CHR$(0))
3160 : FOR J=1 TO 8: REM DUALSTELLEN
3170 : W=W/2
3180 : IF W=INT(W) THEN Z(B)=1
3190 : IF Z(B)=0 AND A$="N" THEN A$="": Z(B)=1: REM EINEN BLOCK FREIHALTEN
3195 : IF Z(B)=1 AND B<19 THEN L=L-1
3200 : B=B+1
3085 : W=INT(W)
3220 : NEXT J
3230 NEXT I
3310 IF L<1 THEN 8000
3390 PRINT: PRINT: PRINT "[197]S WERDEN NUN";L;" [194]LOECKE FREIGESTELLT !": PRINT
3990 :
4000 REM *****************************
4010 REM FUELLEN DER DIR.- BLOECKE
4020 REM *****************************
4021 :
4025 B=0: REM BLOCKZAEHLER, SIEHE OBEN
4027 FOR E=0 TO E(B)-1: REM EINTR/BLOCK
4030 AT=T(B): REM ALTER DIR-TRACK
4035 AS=S(B): NS=AS: REM ALTER SECTOR
4040 IF AT=0 AND AS=0 THEN 7050
4050 I=0
4060 Z=E*32+3: REM STELLE DES ZEIGERS
4100 R=0: REM MARKE DIR.-BLOCK AENDERN
4150 PRINT# 1, "U1:"2;0;AT;AS: REM ALT
4160 PRINT# 1, "B-P:"2,Z: REM ZEIGER
4170 GET# 2, T$,S$: REM ZEIGER FORTS.
4180 T=ASC(T$+CHR$(0))
4190 S=ASC(S$+CHR$(0))
4191 IF T=18 THEN 4670: REM BEARBEITET
4192 IF T=0 OR T>35 OR S>20 THEN Z=1: GOTO 4520: REM FILEENDE
4200 FOR I=0 TO 18 STEP 10: REM SUCHE NACH FREIEM SECTOR IM SECTORABSTAND
4210 : IF Z(I)=0 THEN 4500: REM LEER
4212 : IF I=9 THEN GOTO 4230
4215 : IF I>8 THEN I=I-9: GOTO 4210
4220 NEXT I
4230 Z=-1: REM MARKE: SPUR 18 VOLL
4300 GOTO 4520: REM RUECK OHNE AENDER.
4500 PRINT# 1, "B-P:"2,Z: REM ZEIGER
4510 PRINT# 2, CHR$(18);CHR$(I);: REM ZEIGER VERBIEGEN
4515 IF AT=18 AND AS=NS THEN R=1: REM IN DEN BLOCK, AUS DEM GELESEN WURDE
4520 PRINT " [194]LOCK";RIGHT$(" "+STR$(AT),3);","RIGHT$(" "+STR$(AS),3);
4525 IF R=1 THEN PRINT" [218]EIGER";E+1;"GEAENDERT": GOTO 4570
4530 PRINT " --> 18,";RIGHT$(" "+STR$(NS),3)
4550 PRINT# 1, "B-A:"0,18,NS:REM IN BAM
4560 PRINT# 1, "B-F:"0,AT,AS: REM ALTEN BLOCK FREIGEBEN
4570 Z(I)=1: REM BLOCK IN LISTE BELEGEN
4580 PRINT# 1, "U2:"2;0;18;NS:REM RUEC
4650 AT=T: AS=S: NS=I: REM NORM. BLOCK
4655 IF Z=-1 THEN GOTO 9000: REM OK
4660 IF Z<>1 THEN Z=0: GOTO 4100
4670 NEXT E: REM NEUER DIR.-EINTRAG
4680 B=B+1: GOTO 4027: REM WEITER MIT NAECHSTEM DIRECTORYBLOCK
6990 :
7000 REM *****************************
7010 REM FEHLERMELDUNGEN
7020 REM *****************************
7030 :
7050 PRINT: PRINT "[197]S WAREN NICHT GENUG BELEGTE [194]LOCKS DA."
7060 PRINT " [211]PUR 18 IST IMMERNOCH TEILWEISE FREI!"
7090 GOTO 9000
7800 PRINT:PRINT:PRINT"[196]IE [196]ISKETTE IST LEER!"
7810 GOTO 9000
8000 PRINT "[212]UT MIR LEID, DA IST NICHTS ZU MACHEN."
8010 PRINT "[196]IE GESAMTE [211]PUR 18 IST VOLL BELEGT !"
9000 PRINT
9010 CLOSE 1: CLOSE 2: END